工控網首頁
>

應用設計

>

英創EM928x/EM335x/ESM335x系列主板新CAN驅動使用說明

英創EM928x/EM335x/ESM335x系列主板新CAN驅動使用說明

  12月份,英創對現主要銷售的產品EM928X、EM335X、ESM335X系列工控主板的CAN驅動做了一次較大升級。主要目的是修復原有BUG,同時優化部分邏輯,使得使用起來更加方便。

優化內容

  1、修復了原驅動打開過濾器后一個可能導致接收丟包的BUG

  EM335X及ESM335X系列主板在打開過濾器后,CAN接收單元過少,在高速收發時可能因為來不及收發導致丟包。新驅動修改了該部分邏輯,同時定義過濾器最大數為4個。新的過濾器設置說明請參考附錄《英創新CAN驅動接口調用方法及說明》過濾器設置一節。

  2、增加一套新的接口函數

  1)新的接口更加簡潔清晰,使用起來更加方便。詳細請參考附錄《英創新CAN驅動接口調用方法及說明》。

  2)使用統一標準,英創公司計劃在之后推出的產品也采用該標準,方便客戶在升級更換平臺時移植起來更加方便。

  3)完全兼容老驅動。新驅動保留了老驅動所有接口。升級之后,之前開發的CAN應用程序可以繼續照常使用。

  3、增加對CAN總線錯誤自動復位功能,修改了CAN總線錯誤處理邏輯結構

  原驅動在CAN總線出錯后會上報事件通知上層應用程序,同時掛起等待上層應用程序處理完錯誤事件后手動復位CAN總線。在等待期間,無法進行CAN的收發工作。

圖 原驅動總線錯誤處理流程

  新驅動考慮到,實際應用中用戶更希望在CAN錯誤排除后,能夠盡快恢復通信。大部分時候并不需要停下來等待CAN錯誤處理完畢。所以新驅動在CAN總線出錯后會自動檢查恢復CAN總線。

圖 新驅動總線錯誤處理流程

  4、修改CAN總線錯誤處理模式

  原驅動需要單獨獲取CAN錯誤事件,然后再通過接口查詢錯誤類型,再決定處理方式。新驅動做優化修改了處理模式,使得使用起來更靈活方便。

圖 原驅動CAN總線錯誤處理模式

  新驅動CAN總線錯誤信息改為通過幀形式上報,用戶可以通過注冊表[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\CAN1]中BusErrorReport項設置是否需要接收錯誤幀,默認不接收。

圖 新驅動CAN總線錯誤處理模式

  錯誤幀詳細定義見附錄《CAN錯誤幀定義》。

  5、修改發送邏輯

  原驅動發送指令只是將需要發送的數據幀放入發送BUFFER區,只要BUFFER區未滿均返回成功,但是不代表實際發送成功。

  原CAN驅動會自動檢查發送BUFFER區里未發送的CAN包并嘗試發送,對未發送成功的CAN包會自動重發,直到發送成功。

  在CAN數據線斷開時,CAN發送指令會返回TRUE,但實際數據仍存在發送BUFFER中并未發送出去。當CAN數據線重新連接后,BUFFER中的數據才得以發送。

圖 原驅動CAN發送流程

  新驅動發送函數為阻塞函數,超時時間默認為1000ms,可以設置注冊表[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\CAN1]中TxTimeout項修改該時間長短。返回值為實際發送是否成功的邏輯值。

  當CAN總線錯誤,發送失敗后,CAN驅動不會自動重發CAN包,所以需要應用層自行判斷是否重發。

圖 新驅動CAN發送流程

  6、增加CAN接收BUFFER到8K,可以緩存更多CAN包

附錄

  《英創新CAN驅動接口調用方法及說明》

  《CAN錯誤幀定義》

  成都英創信息技術有限公司

  http://www.emtronix.com

投訴建議

提交

查看更多評論
其他資訊

查看更多

Windows下STM32單片機eclipse編譯環境搭建

Android Studio應用開發簡介

WinCE工控主板WiFi解決方案

敬請關注成都英創微信公眾號

WinCE工控主板通過PPI協議連接西門子PLC